package edu.qichen.onlineBlog.framework;

import edu.qichen.onlineBlog.log.pojo.LoginLog;
import org.springframework.stereotype.Component;

import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;

/**
 * 功能:定时任务，定时任务插入数据，队列存储每次需要插入的数据，每次插入后就清空队列。
 * 作者:程序员欧阳子韩
 * 日期:2024/6/23 10:41
 */
@Component
public class LoginQueue {
    // LinkedList实现Queue接口，可以用LinkedList做一个队列，这里使用阻塞队列LinkedBlockingQueue
    private volatile Queue<LoginLog> loginLogs = new LinkedBlockingQueue<>();

    /**
     * 添加日志信息到队列，如果队列满，则阻塞等待。throws InterruptedException
     * @param loginLog 日志对象
     */
    public void add(LoginLog loginLog)  {
        loginLogs.add(loginLog);
    }


    // 获取日志信息，用于插入数据库
    public LoginLog poll() {
        return loginLogs.poll();
    }
}
